package com.rgs.platform.service;

import com.github.pagehelper.PageInfo;
import com.rgs.base.core.page.IPageRequestModel;
import com.rgs.platform.entity.LendInfoDO;
import com.rgs.platform.filter.LendInfoFilterDTO;

import java.util.List;
import java.util.Optional;

/**
 * @author Ren Gaoshuai
 * @ClassName LendInfoService
 * @create 2022-11-30 11:17
 **/
public interface LendInfoService {

    /**
     * 根据条件获取一条数据
     *
     * @param lendInfoFilter 条件过滤器
     * @return 实例对象
     */
    Optional<LendInfoDO> selectByFilter(LendInfoFilterDTO lendInfoFilter);

    /**
     * 通过条件查询数据
     *
     * @param lendInfoFilter 条件过滤器
     * @return 实例数组
     */
    List<LendInfoDO> listByFilter(LendInfoFilterDTO lendInfoFilter);

    /**
     * 分页获取数据
     * @param iPageRequestModel     分页请求对象
     * @param lendInfoFilter        条件过滤器
     * @return 结果
     */
    PageInfo<LendInfoDO> listPageByFilter(IPageRequestModel iPageRequestModel, LendInfoFilterDTO lendInfoFilter);

    /**
     * 根据主键获取对象
     *
     * @param id 主键
     * @return 实例
     */
    LendInfoDO selectById(String id);

    /**
     * 新增实例
     *
     * @param lendInfoDO 实例
     * @return 实例
     */
    LendInfoDO insert(LendInfoDO lendInfoDO);

    /**
     * 通过条件删除数据
     *
     * @param lendInfoFilter 条件过滤器
     */
    void deleteByFilter(LendInfoFilterDTO lendInfoFilter);

    /**
     * 根据主键删除
     *
     * @param id 主键
     */
    void deleteById(String id);

    void updateSelectiveByPrimaryKey(LendInfoDO lendInfoDO);
}
